package com.icinfo.cloud.provider.punish.ucase.casemain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.icinfo.cloud.provider.punish.fastcase.vo.FastAutoCloseCaseReminderVo;
import com.icinfo.cloud.provider.punish.ucase.punishexecute.vo.CaseDelayInstallmentVo;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 描述：案件详情页面信息视图对象
 *
 * @author xiangyuyu
 * @date 2022/2/17 14:03
 */
@Data
@NoArgsConstructor
public class CaseDetailInfoVo {
    /**
     * 案件id
     */
    private String caseId;

    /*v2.0 新增字段 start*/
    /**
     * 当事人展示名称
     */
    private String partyShowName;
    /**
     * 案由展示名称（多案由用"；"分隔）
     */
    private String caseReasonShowName;
    /**
     * 案由编码（多案由用"；"分隔）
     */
    private String caseReasonCode;
    /**
     * 是否缺少法定代表人证件信息(0-否/1-是)
     */
    private String isLoseLegalCertInfoCode;

    /**
     * 是否缺少法定代表人证件信息名称(0-否/1-是)
     */
    private String isLoseLegalCertInfoName;

    /**
     * 处置方式(1-合并处罚/2-分别处罚)
     */
    private String handleType;

    /**
     * 案件案由、当事人类型；1：单案由单当事人 2：多案由单当事人 3：单案由多当事人
     */
    private String casePartiesReasonType;

    /**
     * 统一社会信用代码
     */
    private String uniscid;

    /**
     * 是否展示当事人选择器（0-否/1-是）
     */
    private String isShowPartiesSelector;

    /**
     * 是否展示当事人选择器名称（0-否/1-是）
     */
    private String isShowPartiesSelectorName;

    /**
     * 案件当事人子流程信息
     */
    private List<PartiesSubFlowInfoVo> partiesSubFlowInfo;
    /*v2.0 新增字段 end*/

    /**
     * 办案人员列表
     */
    private List<CaseHandlePersonRecordVo> caseHandlePersonList;

    /**
     * 办案部门
     */
    private String caseHandlingDeptInfo;

    /**
     * 案件当前阶段名称
     */
    private String caseCurrentStageName;

    /**
     * 案件当前阶段编码
     */
    private String caseCurrentStageCode;

    /**
     * 案件当前环节名称
     */
    private String caseCurrentLinkName;

    /**
     * 案件当前环节编码
     */
    private String caseCurrentLinkCode;

    /**
     * 案件总耗时
     */
    private String caseTotalTime;

    /**
     * 办案期限起始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate caseHandleStartDate;
    /**
     * 办案期限结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate caseHandleDeadlineEndDate;
    /**
     * 办案期限状态
     */
    private String caseHandleDeadlineStatus;
    /**
     * 办案期限状态显示颜色
     */
    private String caseHandleDeadlineStatusShowColor;

    /**
     * 裁决完毕日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate caseVerdictEndTime;

    /**
     * 裁决完毕状态
     */
    private String caseVerdictEndTimeStatus;
    /**
     * 裁决完毕日期显示颜色
     */
    private String caseVerdictEndTimeShowColor;
    /**
     * 案件阶段信息
     */
    private List<CaseDetailStageInfoVo> caseStageInfoList;

    /**
     * 证据列表
     */
    private List<CaseDetailEvidenceInfoVo> caseDetailEvidenceInfoList;
    /**
     * 审批表列表
     */
    private List<CaseStageLinkRelateDocumentVo> caseDetailApprovalTableInfoList;
    /**
     * 文书列表
     */
    private List<CaseStageLinkRelateDocumentVo> caseDetailDocInfoList;

    /**
     * 当前阶段可选审批表列表
     */
    private List<CaseDetailOperateDocInfoVo> caseDetailOperateApprovalTableInfoVoList;
    /**
     * 当前阶段可选文书列表
     */
    private List<CaseDetailOperateDocInfoVo> caseDetailOperateDocInfoVoList;

    /**
     * 其他材料列表
     */
    private List<CaseDetailOtherMaterialInfoVo> caseDetailOtherMaterialInfoList;

    /**
     * 是否已经结案归档（0-否/1-是）
     */
    private String isCaseOver;
    /**
     * 是否已经结案归档名称（0-否/1-是）
     */
    private String isCaseOverName;

    /**
     * 当前登录者是否为办案人员（0-否/1-是）
     */
    private String isCaseHandler;
    /**
     * 当前登录者是否为办案人员名称（0-否/1-是）
     */
    private String isCaseHandlerName;
    /**
     * 案件状态：0.待立案，1.立案审批 2.办案中.3.结案 5.暂停
     */
    private String caseStatus;

    /**
     * 案件机构编码
     */
    private String caseOrgCode;

    /**
     * 案件机构名称
     */
    private String caseOrgName;
    /**
     * 调查结论;1:予以处罚,2:不予处罚
     */
    private String investConclusion;
    /**
     * 处理结论；0 行政处罚,1 涉刑移送 2 行政处理
     */
    private String handleConclusion;
    /**
     * 调查结论（多当事人）;1:予以处罚,2:不予处罚
     */
    private List<Map<String,Object>> investConclusionList;

    /**
     * 作废审批表列表
     */
    private List<CaseStageLinkRelateDocumentVo> invalidCaseDetailApprovalTableInfoList;
    /**
     * 作废文书列表
     */
    private List<CaseStageLinkRelateDocumentVo> invalidCaseDetailDocInfoList;

    /**
     * 作废其他材料列表
     */
    private List<CaseDetailOtherMaterialInfoVo> invalidCaseDetailOtherMaterialInfoList;

    /**
     * 案件名称
     */
    private String caseName;

    /**
     * 调整记录次数
     */
    private String adjustCount;

    /**
     * 发生时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private LocalDateTime caseHappenTime;
    /**
     * 处罚种类
     */
    private String punishKinds;

    /**
     * 分期（延期）信息列表
     */
    private List<CaseDelayInstallmentVo> CaseDelayInstallments;
    /**
     * 案件所属领域编码
     */
    private String caseTerritoryCode;
    /**
     * 是否涉刑移送案件（0-否/1-是）
     */
    private String isCriminalTransferCase;
    /**
     * 案件行政行为码
     */
    private String caseActsCode;

    /**
     * 外部行政行为码
     */
    private String caseExternalActsCode;

    /**
     * 行为码二维码oss地址
     */
    private String caseQrCodeUrl;

    /**
     * 行为码条形码oss地址
     */
    private String caseBarCodeUrl;
    /**
     * 案件类型
     */
    private String caseType;
    /**
     * 案件立案号
     */
    private String caseNumber;
    /**
     * 案发详细地址
     */
    private String caseHappenAddressDetail;

    /**
     * 违则详情-格式化
     */
    private String illegalDetailFormat;

    /**
     * 罚则-格式化
     */
    private String punishDetailFormat;
    /**
     * 人设案由id多个用逗号隔开
     */
    private String personReasonName;
    /**
     * 应急案由 json格式
     */
    private String  caseEmergencyReasonContent;

    /**
     * 是否展示取证按钮(根据陈述申辩复核意见书控制) 0-否/1-是
     */
    private String isShowEvidenceButton;
    /**
     *  人社调查取证阶段是否可以操作结案报告 0-否/1-是
     */
    private String isIsOperateJabg;

    /**
     * 简案快办表单状态
     */
    private String simpleFormType;
    /**
     * 处罚建议
     */
    private String punishOpinion;
    /**
     * 数据来源
     */
    private String dataSource;

    /**
     * 自动结案提示(简案快办)
     */
    private FastAutoCloseCaseReminderVo fastAutoCloseCaseReminderVo;
}
